<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>对象转化</title>
</head>
<body>
    
</body>
</html>

<script>
    //对象是可以自动进行转化的
    let houdunren = new Number(1);
    console.log(houdunren)
    // console.log(houdunren.valueOf())
    //当是数值运算的时候  valueOf > toString
    // console.log(houdunren+3)

    //当参与字符串运算的话，会转化为string  toString > valueOf
    // console.log(houdunren + "3");
    //大部分default转化使用number转化
    // console.log(houdunren == "1")


    //使用内部自定义Symbol.toPrimitive  方法来处理所有的转化场景
    // let hd = {
    //     num : 1,
    //     [Symbol.toPrimitive] : function(){
    //         return this.num;
    //     }
    // };
    // //当参与运算的时候  就吧第二个参数的结果返回
    // console.log(hd+1)

    //依然还是自动转化
    //根据运算的类型  决定现在是使用 toString  还是使用valueOf

    // let hd = {
    //     name : "后盾人",
    //     num : 1,
    //     valueOf:function(){
    //         console.log('valueOf');
    //         return this.num;
    //     },
    //     toString:function(){
    //         console.log('toString')
    //         return this.name;
    //     }
    // };
    // // console.log(hd+3);
    // console.log(`${hd}向军`);

</script>